home *** CD-ROM | disk | FTP | other *** search
/ PC World 2008 September / PCWorld_2008-09_cd.bin / v cisle / sadanastroju / lightning-0.8-tb-win.xpi / chrome / calendar.jar / content / calendar / calendar-subscriptions-dialog.js < prev    next >
Text File  |  2008-01-10  |  5KB  |  149 lines

  1. /* ***** BEGIN LICENSE BLOCK *****
  2.  * Version: MPL 1.1/GPL 2.0/LGPL 2.1
  3.  *
  4.  * The contents of this file are subject to the Mozilla Public License Version
  5.  * 1.1 (the "License"); you may not use this file except in compliance with
  6.  * the License. You may obtain a copy of the License at
  7.  * http://www.mozilla.org/MPL/
  8.  *
  9.  * Software distributed under the License is distributed on an "AS IS" basis,
  10.  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
  11.  * for the specific language governing rights and limitations under the
  12.  * License.
  13.  *
  14.  * The Original Code is Sun Microsystems code.
  15.  *
  16.  * The Initial Developer of the Original Code is Sun Microsystems.
  17.  * Portions created by the Initial Developer are Copyright (C) 2008
  18.  * the Initial Developer. All Rights Reserved.
  19.  *
  20.  * Contributor(s):
  21.  *   Thomas Benisch <thomas.benisch@sun.com>
  22.  *   Daniel Boelzle <daniel.boelzle@sun.com>
  23.  *
  24.  * Alternatively, the contents of this file may be used under the terms of
  25.  * either the GNU General Public License Version 2 or later (the "GPL"), or
  26.  * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
  27.  * in which case the provisions of the GPL or the LGPL are applicable instead
  28.  * of those above. If you wish to allow use of your version of this file only
  29.  * under the terms of either the GPL or the LGPL, and not to allow others to
  30.  * use your version of this file under the terms of the MPL, indicate your
  31.  * decision by deleting the provisions above and replace them with the notice
  32.  * and other provisions required by the GPL or the LGPL. If you do not delete
  33.  * the provisions above, a recipient may use your version of this file under
  34.  * the terms of any one of the MPL, the GPL or the LGPL.
  35.  *
  36.  * ***** END LICENSE BLOCK ***** */
  37.  
  38. var gCurrentSearchOperation = null;
  39. function cancelPendingSearchOperation() {
  40.     if (gCurrentSearchOperation && gCurrentSearchOperation.isPending) {
  41.         gCurrentSearchOperation.cancel(Components.interfaces.calIErrors.OPERATION_CANCELLED);
  42.     }
  43.     gCurrentSearchOperation = null;
  44. }
  45.  
  46. function onLoad() {
  47.     opener.setCursor("auto");
  48. }
  49.  
  50. function onUnload() {
  51.     cancelPendingSearchOperation();
  52. }
  53.  
  54. function onKeyPress(event) {
  55.     switch(event.keyCode) {
  56.         case 27: /* ESC */
  57.             if (gCurrentSearchOperation) {
  58.                 cancelPendingSearchOperation();
  59.                 document.getElementById("status-deck").selectedIndex = 0;
  60.                 event.stopPropagation();
  61.                 event.preventDefault();
  62.             }
  63.             break;
  64.     }
  65. }
  66.  
  67. function onTextBoxKeyPress(event) {
  68.     switch(event.keyCode) {
  69.         case 13: /* RET */
  70.             onSearch();
  71.             event.stopPropagation();
  72.             event.preventDefault();
  73.             break;
  74.     }
  75. }
  76.  
  77. function onAccept() {
  78.     var richListBox = document.getElementById("subscriptions-listbox");
  79.     var rowCount = richListBox.getRowCount();
  80.     for (var i = 0; i < rowCount; i++) {
  81.         var richListItem = richListBox.getItemAtIndex(i);
  82.         var checked = richListItem.checked;
  83.         if (checked != richListItem.subscribed) {
  84.             var calendar = richListItem.calendar;
  85.             if (checked) {
  86.                 getCalendarManager().registerCalendar(calendar);
  87.             } else {
  88.                 getCalendarManager().unregisterCalendar(calendar);
  89.             }
  90.         }
  91.     }
  92.     return true;
  93. }
  94.  
  95. function onCancel() {
  96. }
  97.  
  98. function onSearch() {
  99.     cancelPendingSearchOperation();
  100.  
  101.     var richListBox = document.getElementById("subscriptions-listbox");
  102.     richListBox.clear();
  103.  
  104.     var registeredCals = {};
  105.     for each (var cal in getCalendarManager().getCalendars({})) {
  106.         registeredCals[cal.id] = true;
  107.     }
  108.  
  109.     var opListener = {
  110.         onResult: function search_onResult(op, result) {
  111.             var richListBox = document.getElementById("subscriptions-listbox");
  112.             if (result) {
  113.                 for each (var calendar in result) {
  114.                     richListBox.addCalendar(calendar, registeredCals[calendar.id]);
  115.                 }
  116.             }
  117.             if (!op.isPending) {
  118.                 var statusDeck = document.getElementById("status-deck");
  119.                 if (richListBox.getRowCount() > 0) {
  120.                     statusDeck.selectedIndex = 0;
  121.                 } else {
  122.                     statusDeck.selectedIndex = 2;
  123.                 }
  124.             }
  125.         }
  126.     };
  127.  
  128.     var op = getCalendarSearchService().searchForCalendars(document.getElementById("search-textbox").value,
  129.                                                            0 /* hints */, 50, opListener);
  130.     if (op && op.isPending) {
  131.         gCurrentSearchOperation = op;
  132.         document.getElementById("status-deck").selectedIndex = 1;
  133.     }
  134. }
  135.  
  136. function onSubscribe() {
  137.     var item = document.getElementById("subscriptions-listbox").selectedItem;
  138.     if (item && !item.disabled) {
  139.         item.checked = true;
  140.     }
  141. }
  142.  
  143. function onUnsubscribe() {
  144.     var item = document.getElementById("subscriptions-listbox").selectedItem;
  145.     if (item && !item.disabled) {
  146.         item.checked = false;
  147.     }
  148. }
  149.